// pages/orders/orders.js
const API = require('../../utils/api')
const pathUrl = require('../../utils/common')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    orders: [],
    loading: false,
    page: 1,
    pageSize: 10,
    hasMore: true,
    activeTab: '', // 0:全部, 1:待支付, 2:已支付, 3:已取消
    statusList: [
      {
        name: '全部',
        value: ''
      },
      {
        name: '已支付',
        value: '1'
      },
      {
        name: '已取消',
        value: '2'
      },
      {
        name: '已完成',
        value: '3'
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.fetchOrders();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 如果是从订单详情页返回，刷新订单列表
    if (this.data.needRefresh) {
      this.setData({ needRefresh: false })
      this.fetchOrders(true)
    }
  },

  /**
   * 获取订单列表
   */
  async fetchOrders(reset = true) {
    // 如果当前正在加载中，避免重复加载
    if (this.data.loading) return
    
    if (reset) {
      this.setData({ page: 1, hasMore: true })
    }
    
    if (!this.data.hasMore && !reset) return
    
    this.setData({ loading: true })
    
    try {
      const res = await API.getOrderList({
        pageNum: this.data.page,
        pageSize: this.data.pageSize,
        status: this.data.activeTab
      })
      // 处理订单数据
      const orders = res.records || []
      // 更新数据，判断是否还有更多数据
      this.setData({
        orders: reset ? orders : [...this.data.orders, ...orders],
        hasMore: orders && orders.length >= this.data.pageSize,
        loading: false
      })
    } catch (error) {
      console.error('加载订单列表失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
      this.setData({ loading: false })
    }
  },

  /**
   * 切换订单状态标签
   */
  switchTab(e) {
    const tabIndex = e.currentTarget.dataset.status
    if (tabIndex == this.data.activeTab) return
    this.setData({ activeTab: tabIndex })
    this.fetchOrders(true)
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.fetchOrders(true)
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.loadMore()
  },

  /**
   * 加载更多数据
   */
  loadMore() {
    if (!this.data.loading && this.data.hasMore) {
      this.setData({ page: this.data.page + 1 })
      this.fetchOrders(false)
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '我的订单',
      path: '/pages/orders/orders'
    };
  },
  cancelOrder(e){
    wx.showModal({
      title: '提示',
      content: '确定取消订单吗？',
      success: (res) => {
        if (res.confirm) {
          // 用户点击了确定
          const id = e.currentTarget.dataset.id
          API.cancelOrder(id).then(res=>{
              wx.showToast({
                title: '取消成功',
                icon: 'success'
              })
              this.fetchOrders(true)
            
          })
        } else if (res.cancel) {
          // 用户点击了取消
          console.log('用户点击了取消')
        }
      }
    })
  }
})